package com.etrans.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Map;

/**
 * 对Bean进行操作的相关工具方法
 * 
 * @author R.劳
 * @创建时间 2015年4月13日 上午10:49:00
 * @version 1.0
 * @description 项目名称:wl-sdk,所属包:com.etrans.wl.sdk.util
 */
public class BeanUtils {

	/**
	 * 将Bean对象转换成Map对象，将忽略掉值为null或size=0的属性
	 * 
	 * @param obj
	 *            对象
	 * @return 若给定对象为null则返回size=0的map对象
	 */
	public static void appendToMap(Object obj, Map<String, Object> map) {
		if (obj == null)
			return;
		Field[] fileds = obj.getClass().getDeclaredFields();
		invoke(obj, fileds, map);
	}

	/**
	 * 
	 * @param obj
	 * @param fieldName
	 * @return
	 */
	public static void invoke(Object obj, Field[] fieldName,
			Map<String, Object> map) {
		if (fieldName == null || (fieldName != null && fieldName.length < 1))
			return;
		Method method = null;
		for (int i = 0; i < fieldName.length; i++) {
			try {
				method = obj.getClass().getMethod(
						"get" + firstWUpperCase(fieldName[i].getName()),
						new Class[] {});
				Object value = method.invoke(obj, new Object[] {});
				map.put(fieldName[i].getName(), value);
			} catch (Exception e) {
				map.put(fieldName[i].getName(), null);
			}
		}
	}

	/**
	 * 首字母大写
	 *
	 * @param fileName
	 * @return
	 */
	public static String firstWUpperCase(String fileName) {
		String newString = "";
		if (fileName != null && fileName.length() >= 1) {
			newString = fileName.substring(0, 1);
			newString = newString.toUpperCase() + fileName.substring(1);
		}
		return newString;
	}

}